const fetch = require('./fetch.js')
let info,
  code

/**
 * 获取用户个人信息方法
 * @param refresh 是否需要重新请求微信, 刷新用户信息
 * @returns 包含了用户信息的 promise 对象
 */
function userInfo () {
  return new Promise((resolve, reject) => {
    if (info) {
      // 如果本次运行时已经获取到了用户信息, 且不需要刷新用户信息时, 直接返回相应信息
      resolve()
    } else {
      const app = getApp()
      wx.getUserInfo({
        success (res) {
          // 如果用户已经授权, 可以获取到用户信息 直接保存并返回获取到相应信息
          info = res
          resolve()
        },
        fail (res) {
          reject(res)
          console.log(res)
        }
      })
    }
  })
}

function login () {
  return new Promise((resolve, reject) => {
    if (code) {
      resolve()
    } else {
      let app = getApp()
      wx.login({
        success (res) {
          code = res.code
          resolve()
        },
        fail (res) {
          reject(res)
          wx.showToast({
            title: '登录失败',
            icon: 'none'
          })
        }
      })
    }
  })
}

module.exports = function () {
  Promise.all([login(), userInfo()]).then(function (posts) {
    var {encryptedData, iv, rawData, signature} = info
    // todo 调用登录接口
    // fetch.post(app.globalData.config._domain + '/miniapp-user/update', {
    //   encryptedData,
    //   iv,
    //   userInfo: rawData,
    //   signature,
    //   code
    // }).then(res => {
    // })
    console.log({
      encryptedData,
      iv,
      userInfo: rawData,
      signature,
      code
    })
  })
}

